Three-dimensional (3D or 3d) virtual environments are used in a variety of applications. They have become a mainstay in computer-aided design (CAD) by reducing or even eliminating the need to produce costly prototypes when designing a new object, part or machine. 3D virtual environments can also be used to visualize existing objects and environments, for example in immersive displays or flight simulators, or to create new environments such as those found in video games or animated movies.
To create new content for a 3D virtual environment, edit existing content of the environment or simply to navigate through the environment, it is necessary for the user to perform interactions (i.e. to interact) with the environment. User interaction in these 3D virtual environments can be achieved in a variety of ways. A first method consists in inputting commands to a program generating the 3D virtual environment through a keyboard. The program will usually have a preprogrammed set of instructions to which it will respond. The user may input a particular command corresponding to a certain interaction and may also input a particular set of coordinates corresponding to the location where the interaction is to take place. The interaction could comprise drawing lines, vertices, solid objects, etc. within the 3D environment, or selecting one or more objects within the 3D environment to set or change properties of said object or to change its state within the 3D environment.
Unfortunately, this method is fastidious and time-consuming, and requires from the user a precise knowledge of the location where the interaction will be performed.
This method has been largely superseded by the use of a pointer or cursor which allows the user to indicate where in the 3D virtual environment a certain interaction is to take place. The cursor is typically controlled by a computer mouse which is moved on a planar surface. Unfortunately, this configuration only allows the cursor to be moved in a static two-dimensional workplane which is generally coplanar with the screen of a display unit. To select an object or a surface, the user must bring said object or surface within the workplane, which may involve manipulations within the 3D environment such as hiding other objects, modifying the point of view, etc., all of which are relatively complex and time-consuming.
There is therefore a need for a new system which would enable simple and efficient interactions within a 3D virtual environment.